package com.dm.learn.java.format;

import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 功能更强大的格式化工具类
 */
public class FormatUtils {
	private static SimpleDateFormat second = new SimpleDateFormat("yy-MM-dd hh:mm:ss");

	private static SimpleDateFormat day = new SimpleDateFormat("yyyy-MM-dd");
	private static SimpleDateFormat detailDay = new SimpleDateFormat("yyyy年MM月dd日");
	private static SimpleDateFormat fileName = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
	private static SimpleDateFormat tempTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	private static SimpleDateFormat excelDate = new SimpleDateFormat("yyyy/MM/dd");

	/**
	 * 格式化excel中的时间
	 * 
	 * @param date
	 * @return
	 */
	public static String formatDateForExcelDate(Date date) {
		return excelDate.format(date);
	}

	/**
	 * 将日期格式化作为文件名
	 * 
	 * @param date
	 * @return
	 */
	public static String formatDateForFileName(Date date) {
		return fileName.format(date);
	}

	/**
	 * 格式化日期(精确到秒)
	 * 
	 * @param date
	 * @return
	 */
	public static String formatDateSecond(Date date) {
		return second.format(date);
	}

	/**
	 * 格式化日期(精确到秒)
	 * 
	 * @param date
	 * @return
	 */
	public static String tempDateSecond(Date date) {
		return tempTime.format(date);
	}

	public static Date tempDateSecond(String str) {
		try {
			return tempTime.parse(str);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return new Date();
	}

	/**
	 * 格式化日期(精确到天)
	 * 
	 * @param date
	 * @return
	 */
	public static String formatDateDay(Date date) {
		return day.format(date);
	}

	/**
	 * 格式化日期(精确到天)
	 * 
	 * @param date
	 * @return
	 */
	public static String formatDateDetailDay(Date date) {
		return detailDay.format(date);
	}

	/**
	 * 将double类型的数字保留两位小数（四舍五入）
	 * 
	 * @param number
	 * @return
	 */
	public static String formatNumber(double number) {
		DecimalFormat df = new DecimalFormat();
		df.applyPattern("#0.00");
		return df.format(number);
	}

	/**
	 * 将字符串转换成日期
	 * 
	 * @param date
	 * @return
	 * @throws Exception
	 */
	public static Date formateDate(String date) throws Exception {
		return day.parse(date);
	}

	/**
	 * 将字符日期转换成Date
	 * 
	 * @param date
	 * @return
	 * @throws Exception
	 */
	public static Date parseStringToDate(String date) throws Exception {
		return day.parse(date);
	}

	public static String formatDoubleNumber(double number) {
		DecimalFormat df = new DecimalFormat("#");
		return df.format(number);
	}
}